package ru.compft.web.beans.table;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ru.compft.common.data.AppRole;

import java.io.Serializable;
import java.util.List;

/**
 * User: VVasiliev
 * Date: 19.06.12
 * Time: 9:38
 * Бин представляющий таблицу ролей
 * Расширяет функционал постраничника
 */
public class RolesTableBean extends PaginationBean implements Serializable {
    private static final long serialVersionUID = 8405640516131889967L;

    private static final Logger logger = LoggerFactory.getLogger(RolesTableBean.class);

    /**
     * Список ролей для вывода на текущей странице
     *
     * @return
     */
    @Override
    public List getRecords() {
        // Получаем номер страницы через Request, из его Query параметра
//        final ServletRequest servletRequest = (ServletRequest) FacesUtils.getExternalContext().getRequest();
//        final String pageParam = servletRequest.getParameter(PAGE_PARAM);
//
//        if (logger.isDebugEnabled()) {
//            logger.debug("Try get role list for page = " + pageParam);
//        }
//
//        // Если параметра нет, то возвращаем 1-ю страницу.
//        int currentPage = 1;
//        try {
//            currentPage = Integer.parseInt(pageParam);
//        } catch (NumberFormatException e) {
//            // пишем ошибку в лог. При этом номер страницы будет 1
//            logger.error("Page param = " + pageParam, e);
//        }
//
//        if (logger.isDebugEnabled()) {
//            logger.debug("Set current page = " + currentPage);
//        }
//
//        // устанавливаем номер страницы в бин
//        setCurrentPage(currentPage);
//
//        // получаем количество записей на странице
//        final int recordsPerPage = getRecordsPerPage();
//
//        // считаем начальный индекс - номер страницы умноженный на максимальное количество записей на странице
//        // минус 1 делаем потому. что это индекс начала страницы
//        final int fromIndex = (currentPage - 1) * recordsPerPage;
//        return getRoles(fromIndex, recordsPerPage);
        return null;
    }

    /**
     * Список заданного количества записей от определенного индекса
     *
     * @param from  - индекс начала
     * @param count - количество записей
     * @return
     */
    private List<AppRole> getRoles(int from, int count) {
//        if (logger.isDebugEnabled()) {
//            logger.debug("Try getting '" + count + "' roles from '" + from + "' index");
//        }
//
//        // получаем сервис работы с ролями
//        final RolesService rolesService = (RolesService) FacesUtils.getSpringBean(WebConst.ROLE_SERVICE);
//        final List<AppRole> roleList = rolesService.getRoles(from, count);
//        final int totalRecords = rolesService.countAllRoles();
//
//        // заполняем некоторые поля для постраничника
//        fillPagebleParams(from, count, roleList, totalRecords);
//
//        if (logger.isDebugEnabled()) {
//            logger.debug("Was fount '" + (roleList != null ? roleList.size() : "null") + "' roles");
//        }
//
//        return roleList;
        return null;
    }
}
